# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os.path

binary = AMXX.MetaPlugin(builder, 'amxmodx')

binary.compiler.defines += [
  'JIT',
  'ASM32',
  'HAVE_STDINT_H',
]

AMXX.AddAssembly(builder, binary, 'helpers-x86.asm', 'helpers-asm.obj')
AMXX.AddAssembly(builder, binary, 'natives-x86.asm', 'natives-asm.obj')
AMXX.AddAssembly(builder, binary, 'amxexecn.asm', 'amxexecn-asm.obj',
  includes=['amxdefn.asm'])
AMXX.AddAssembly(builder, binary, 'amxjitsn.asm', 'amxjitsn-asm.obj',
  includes=['amxdefn.asm'],
  # Opcode sizes must be maximum width for patching to work.
  extra_argv=['-O0'])

if builder.target_platform == 'mac':
  binary.compiler.postlink += [
    '-Wl,-read_only_relocs,suppress'
  ]
elif builder.target_platform == 'windows':
  binary.compiler.linkflags += [
    '/EXPORT:GiveFnptrsToDll=_GiveFnptrsToDll@8,@1',
    '/SECTION:.data,RW',
  ]
elif builder.target_platform == 'linux':
  binary.compiler.postlink += [
    binary.Dep(AMXX.stdcxx_path),
  ]

binary.compiler.linkflags += [AMXX.zlib.binary, AMXX.hashing.binary, AMXX.utf8rewind.binary]

binary.sources = [
  'meta_api.cpp',
  'CVault.cpp',
  'vault.cpp',
  'float.cpp',
  'file.cpp',
  'modules.cpp',
  'CMisc.cpp',
  'CTask.cpp',
  'string.cpp',
  'amxmodx.cpp',
  'CEvent.cpp',
  'CCmd.cpp',
  'CLogEvent.cpp',
  'srvcmd.cpp',
  'strptime.cpp',
  'amxcore.cpp',
  'amxtime.cpp',
  'power.cpp',
  'amxxlog.cpp',
  'fakemeta.cpp',
  'amxxfile.cpp',
  'CLang.cpp',
  'emsg.cpp',
  'CForward.cpp',
  'CPlugin.cpp',
  'CModule.cpp',
  'CMenu.cpp',
  'util.cpp',
  'amx.cpp',
  'amxdbg.cpp',
  'natives.cpp',
  'newmenus.cpp',
  'debugger.cpp',
  'optimizer.cpp',
  'format.cpp',
  'messages.cpp',
  'libraries.cpp',
  'vector.cpp',
  'sorting.cpp',
  'nongpl_matches.cpp',
  'CFlagManager.cpp',
  'datastructs.cpp',
  'trie_natives.cpp',
  'CDataPack.cpp',
  'datapacks.cpp',
  'stackstructs.cpp',
  'CTextParsers.cpp',
  'textparse.cpp',
  'CvarManager.cpp',
  'cvars.cpp',
  '../public/memtools/MemoryUtils.cpp',
  '../public/memtools/CDetour/detours.cpp',
  '../public/memtools/CDetour/asm/asm.c',
  '../public/resdk/mod_rehlds_api.cpp',
  'CLibrarySys.cpp',
  'CGameConfigs.cpp',
  'gameconfigs.cpp',
  'CoreConfig.cpp',
]

if builder.target_platform == 'windows':
  binary.sources += ['version.rc']

AMXX.binaries += [builder.Add(binary)]
